setInterval()

Доступность

Flash Player 6.

Синтаксис

setInterval(functionName:Function, interval:Number [, param1:Object, param2, ..., paramN]) : Number

Параметры

functionName Имя функции или ссылка на безымянную (анонимную) функцию.

interval Промежуток времени, через который вызывается фунция functionName , в миллисекундах.

param1, param2, ..., paramN Необязательные параметры, передаваемые вызываемой функции или методу.

Возвращает

Число-идентификатор, которое может быть передано clearInterval() для отмены циклического вызова функции.

Описание

Функция; периодически вызывает указанную функцию или метод. Вы можете использовать это для обновления значения переменных в базе данных или обновления величины, показывающей какое-либо время.

Если interval меньше, чем соответствующей частоте кадров ролика интервал (например, 10 кадров в секунду [fps] соответствуют интервалу в 100 миллисекунд), функция будет вызываться с максимально возможно близкой (при данной частоте кадров) к interval частотой. Вы должны использовать функцию updateAfterEvent(), если необходимо обновлять изображение на экране. Если же занчение interval больше, чем соответствующее данной частоте кадров ролика значение, вызов функции будет происходить при каждой смене кадров (точнее, когда воспроизводящая головка на Таймлайне входит в кадр); это минимизирует излишне частое обновление экрана.

Пример

Пример 1: В следующем примере каждые 1000 миллисекунд (1 секунду) вызывается анонимная функция.

setInterval( function(){ trace("Функция вызвана!"); }, 1000 );

Пример 2: В следующем примере определяется два обрабочика событий, каждый из них вызывается. Оба вызова setInterval() отправляют строку "Вызвана функция" на панель Output каждые 1000 миллисекунд. Первый вызов setInterval() вызывает функцию callback1(), содержащую оператор trace(). Второй вызов setInterval() передает строку "Вызвана функция!" функции callback2() в качестве параметра.

function callback1() {
  trace("Вызвана функция"); 
}

function callback2(arg) { 
  trace(arg);
}

setInterval( callback1, 1000 ); 
setInterval( callback2, 1000, "Вызвана функция" );

Пример 3: в данном примере используется метод объекта. Чтобы вызвать метод какого-либо объекта, необходимо использовать следующий синтаксис:

obj = new Object();
obj.interval = function() { 
  trace("Вызвана функция"); 
}

setInterval( obj, "interval", 1000 ); 

obj2 = new Object();
obj2.interval = function(s) { 
  trace(s); 
}
setInterval( obj2, "interval", 1000, "Вызвана функция" ); 

Для вызова метода необходимо использовать вторую форму синтаксиса setInterval(), как показано в следующем примере:

setInterval( obj2, "interval", 1000, "Вызвана функция" ); 

Работая с данной функция, не забывайте, что она требует затрат оперативной памяти. Например, при удалении мувиклипа, функция setInterval(), связанная с ним, удалена не будет. Всегда удаляйте setInterval() при помощи clearInterval() как только вам больше не нужно ее использовать, как показано в следующем примере:

// Создаем листнер для объекта MovieClipLoader
var listenerObjectbject = new Object();
listenerObject.onLoadInit = function(target_mc:MovieClip) {
  trace("Интервал установлен");
  /* После загрузки указанного мувиклипа, вызываем функцию intervalFunc примерно каждые 1000 мс (1 секунду). */
  target_mc.myInterval = setInterval(intervalFunc, 1000, target_mc);
};
function intervalFunc(target_mc) {
  // Выводим какое-нибудь простое сообщение, например, имя данного экземпляра.
  trace(target_mc+" был загружен за "+getTimer()/1000+" секунд.");
  /* При клике по загруженному мувиклипу интервал будет очищен, а мувиклип — удален. Если интервал не очистить до удаления мувиклипа, функция по прежнему будет вызываться ни смотря на то, что мувиклипа больше не существует. */
  target_mc.onRelease = function() {
    trace("Интервал очищен");
    clearInterval(this.myInterval);
    // Удаляем мувиклип
    removeMovieClip(this);
  };
}
var jpeg_mcl:MovieClipLoader = new MovieClipLoader();
jpeg_mcl.addListener(listenerObject);
jpeg_mcl.loadClip("http://www.macromedia.com/software/central/images/klynch_breezo.jpg", this.createEmptyMovieClip("jpeg_mc", this.getNextHighestDepth()));

Если Вы работаете с setInterval() внутри класса, убедитесь, что Вы используете ключевое слово this при вызове функции. Функция setInterval() не сможет получить доступа к членам класса, если это ключевое слово будет опущено. Это показано в следующем примере. Во FLA файле создайте кнопку и назовите ее deleteUser_btn,, код добавьте в первый кадр главного Таймлайна:

var me:User = new User("Gary");
this.deleteUser_btn.onRelease = function() {
  trace("До свидания, "+me.username);
  delete me;
};

Затем создайте в той же директории файл User.as. Введите в него следующий код:

class User {
  var intervalID:Number;
  var username:String;
  function User(param_username:String) {
    trace("Добро пожаловать, "+param_username);
    this.username = param_username;
    this.intervalID = setInterval(this, "traceUsername", 1000, this.username);
  }
  function traceUsername(str:String) {
    trace(this.username+" находится в системе "+getTimer()/1000+" секунд.");
  }
}

См. также

clearInterval(), updateAfterEvent()